package com.efuture.chaptersix

/* @Description:Kotlin语言使用in和out
 * @Auther: zhaoshanshan
 * @Date: 2022/03/08/4:56 下午
 */
class SetClass<in T>{//该类范型为in 所以该类只能进行修改 不能进行读取
    fun set1(item:T){
        println("set1方法item的值为:$item")
    }
    fun set2(item:T){
        println("set2方法item的值为:$item")
    }
    fun set3(item:T){
        println("set3方法item方法的值为:$item")
    }
//    fun get():T? { //该函数会报错 因为T是只能修改 不能被读取
//        return null
//    }

}

class GetClass<out T>(private val item:T){//out 代表该类成员只能被获取 不能被修改
//  fun set(item:T){  该函数会报错 因为T为out 不能被修改 只能被读取
//
//  }

    fun get1(){
        println(item)
    }
    fun get2(){
        println(item)
    }
}

fun main() {
   val p1 = SetClass<String>()
    p1.set1("zhaoshanshan")
    p1.set2("liuyifan")
    p1.set3("tongshuai")

    val p2 = GetClass("赵山山")
    p2.get1()
    val p3 = GetClass("刘一凡")
    p3.get2()
}